package com.xncoding.aop.aspect;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

/**
 * @args(注解类型)：
 * 方法参数所属的类上有指定的注解；
 * 注意不是参数上有指定的注解，而是参数类型的类上有指定的注解。
 */
@Aspect
@Component
public class AopAargs {

    /**
     * 匹配方法只有一个参数，并且参数所属的类上有Ann6注解
     */
    @Pointcut("@args(com.xncoding.aop.annotation.Atarget.Ann6)")
    public void pc00() {
    }

    /**
     * 匹配方法只有2个参数，且第2个参数所属的类型上有Ann8注解
     */
    @Pointcut("@args(*,com.xncoding.aop.annotation.Atarget.Ann6)")
    public void pc01() {
    }

//    @Before("pc00()")
    public void pc00(JoinPoint joinPoint) {
        System.out.println(joinPoint);
    }

//    @Before("pc01()")
    public void pc01(JoinPoint joinPoint) {
        System.out.println(joinPoint);
    }

}
